package cn.wyj.later;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

public class SyncProducer {

	public static void main(String[] args) throws Exception {
    	// 1.创建一个默认的生产者对象，并设置生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("later_group_name");

    	// 2.设置NameServer的地址
    	producer.setNamesrvAddr("localhost:9876");

    	// 3.启动Producer实例
        producer.start();

		// 4.创建消息，并指定Topic，Tag和消息体  JSON
		Message msg = new Message("order-later-topic" /* Topic */,
		"pet_tag" /* Tag */,
		"rocket-mq，延迟发送".getBytes(StandardCharsets.UTF_8)
		);

		// rocketmq的业务异步跟消息的同步有没有关系？
		// 同步消息：必须等待响应结果拿到了才能执行后续代码
		// 异步消息：不管是否拿到响应结果，继续执行下一句代码
		// 单向消息：只管发，不管消息是否成功，也就是没有响应

		// 5.发送同步消息
		msg.setDelayTimeLevel(3);
		SendResult send = producer.send(msg);

		// 6.通过sendResult返回消息是否成功送达
		System.out.printf("发送陈工");
		System.out.println(send);

    	// 7.如果不再发送消息，关闭Producer实例。
    	producer.shutdown();
    }

}